<template>
  <json-editor
    v-model="jsonText"
    placeholder=""
  />
</template>

<script>
import JsonEditor from '@/components/editors/JsonEditor.vue';

export default {
  name: 'JsonEditorComponent',
  components: {
    JsonEditor,
  },
  data() {
    return {
      /* eslint-disable */
      jsonText: [
        {
          description: 'simple enum validation',
          schema: { enum: [1, 2, 3] },
          tests: [
            {
              description: 'one of the enum is valid',
              data: 1,
              valid: true,
            },
            {
              description: 'something else is invalid',
              data: 4,
              valid: false,
            },
          ],
        },
        {
          description: 'heterogeneous enum validation',
          schema: { enum: [6, 'foo', [], true, { foo: 12 }] },
          tests: [
            {
              description: 'one of the enum is valid',
              data: [],
              valid: true,
            },
            {
              description: 'something else is invalid',
              data: null,
              valid: false,
            },
            {
              description: 'objects are deep compared',
              data: { foo: false },
              valid: false,
            },
          ],
        },
        {
          description: 'enums in properties',
          schema: {
            type: 'object',
            properties: {
              foo: { enum: ['foo'] },
              bar: { enum: ['bar'] },
            },
            required: ['bar'],
          },
          tests: [
            {
              description: 'both properties are valid',
              data: { foo: 'foo', bar: 'bar' },
              valid: true,
            },
            {
              description: 'missing optional property is valid',
              data: { bar: 'bar' },
              valid: true,
            },
            {
              description: 'missing required property is invalid',
              data: { foo: 'foo' },
              valid: false,
            },
            {
              description: 'missing all properties is invalid',
              data: {},
              valid: false,
            },
          ],
        },
      ],
    };
  },
};
</script>
